package cn.bearspark.user.rpc;

import java.util.Date;
import java.util.Map;

/**
 * 用户模块中动态相关服务的远程调用接口
 *
 * @author f
 */
public interface UserHappeningRpc {

    /**
     * 用户发布动态后，更新指定用户的最近活跃时间，同时给用户的动态数加一
     *
     * @param userId 发布动态的用户 id
     */
    void afterPublishHappening(long userId);

    /**
     * 用户删除动态后，更新指定用户的最近活跃时间，同时给用户的动态数减一
     *
     * @param userId      删除动态的用户 id
     * @param lastPubTime 该用户最后一次发布动态的时间，可以为空，表示用户删除了最后一条动态，这时将用户最近活跃时间设置为用户创建时间即可
     */
    void afterDeleteHappening(long userId, Date lastPubTime);

    /**
     * 用户定时发布动态后，更新指定用户的最近活跃时间，同时设置用户的动态数，做幂等处理
     *
     * @param userHappeningCntMap 用户 id 与动态数的映射，key：用户 id，value：用户的动态数
     */
    void afterPublishScheduledHappening(Map<Long, Long> userHappeningCntMap);
}
